// server/app.js
require('dotenv').config();
const express = require('express');
const cors = require('cors');
const { sequelize, testConnection } = require('./config/db');
const db = require('./models');
const path = require('path');

const app = express();
const PORT = process.env.PORT || 3000;

// 中间件
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

// 测试数据库连接
testConnection();

// 导入路由
const userRoutes = require('./routes/userRoutes');
const uploadRoutes = require('./routes/uploadRoutes');

// 设置静态文件目录
app.use(express.static(path.join(__dirname, 'public')));

// 路由
const routes = require('./routes');
app.use('/api', routes);

// 使用路由
app.use('/api/users', userRoutes);
app.use('/api/upload', uploadRoutes);

// 根路由
app.get('/', (req, res) => {
  res.json({
    message: '家庭健康管理系统API服务器'
  });
});

// 数据库同步与服务器启动
sequelize.sync({ alter: true })
  .then(() => {
    app.listen(PORT, () => {
      console.log(`服务器运行在端口 ${PORT}`);
    });
  })
  .catch((err) => {
    console.error('数据库同步失败:', err);
  });

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({
    success: false,
    message: '服务器内部错误'
  });
});

// 处理404请求
app.use((req, res) => {
  res.status(404).json({
    success: false,
    message: '请求的资源不存在'
  });
});

module.exports = app; 